三种迭代方式的删除
-
普通for循环
public class Demo1_For { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); //普通for循环 for(int i = 0; i < list.size(); i++) { if("b".equals(list.get(i))) { list.remove(i); //通过索引删除元素 i--; } } }
-
迭代器删除
public class Demo1_For { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); //迭代器循环 Iterator<String> it = list.iterator(); while(it.hasNext()) { String str = it.next(); if("b".equals(str)) { it.remove(); //如果用集合的删除,会发生并发修改异常 //用迭代器删除解决这个问题 } } }
-
增强for循环
public class Demo1_For { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); //增强for循环 for(String str : list){ if(b.equals("str")){ list.remove("b"); //会报错,并发修改异常 } } }